package cn.changein.framework.modular.templateInfo.service;

import cn.changein.framework.base.pojo.page.PageInfo;
import cn.changein.framework.kernel.model.response.ResponseData;
import cn.changein.framework.modular.templateInfo.entity.TemplateInfo;
import cn.changein.framework.modular.templateInfo.model.params.TemplateInfoParam;
import cn.changein.framework.modular.templateInfo.model.result.TemplateInfoResult;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.File;
import java.util.List;

/**
 * <p>
 * 导入模板表 服务类
 * </p>
 *

 * @Date 2020-11-27
 * @Copyright: companyName
 * @Version 1.0
 * @Since JDK1.8
 */
public interface TemplateInfoService extends IService<TemplateInfo> {

    /**
     * 新增
     *

     * @Date 2020-11-27
     */
    void add(TemplateInfoParam param);

    /**
     * 删除
     *

     * @Date 2020-11-27
     */
    void delete(TemplateInfoParam param);

    /**
     * 更新
     *

     * @Date 2020-11-27
     */
    void update(TemplateInfoParam param);

    /**
     * 查询单条数据，Specification模式
     *

     * @Date 2020-11-27
     */
    TemplateInfoResult findBySpec(TemplateInfoParam param);

    /**
     * 查询列表，Specification模式
     *

     * @Date 2020-11-27
     */
    List<TemplateInfoResult> findListBySpec(TemplateInfoParam param);

    /**
     * 查询分页数据，Specification模式
     *

     * @Date 2020-11-27
     */
     PageInfo findPageBySpec(TemplateInfoParam param);

     /*

      * @Description //TODO 模板文件新增
      * @Date 2020-11-27 09:45
      * @MethodName saveTemplateInfo
      * @Param [name, suffixName, filename, tempFile]
      * @return boolean
      **/
    boolean saveOrUpdateTemplateInfo(TemplateInfoParam templateInfoParam, String filename, File tempFile);

    /*

     * @Description //TODO  校验数据是否唯一
     * @Date 2020-11-27 10:44
     * @MethodName validateTemplate
     * @Param [templateInfoParam]
     * @return cn.changein.framework.kernel.model.response.ResponseData
     **/
    ResponseData validateTemplate(TemplateInfoParam templateInfoParam);

    /*

     * @Description //TODO 根据模板编号获取模板信息
     * @Date 2020-11-27 14:17
     * @MethodName getTemplateinfoByCode
     * @Param [code]
     * @return cn.changein.framework.modular.templateInfo.entity.TemplateInfo
     **/
    TemplateInfo getTemplateinfoByCode(String templateCode);

    /*

     * @Description //TODO 根据模板编号查询模板信息
     * @Date 2020-11-28 12:51
     * @MethodName getTemplateInfoByCode
     * @Param [templateCode]
     * @return cn.changein.framework.modular.templateInfo.entity.TemplateInfo
     **/
    ResponseData getTemplateInfoByCode(String templateCode);
}
